1650 INPUT "More changes ? Enter (Y or N) or (Q, M, or F) ";L$:EX$ = L$: GOSUB 6290
1660 IF L$ = "Y" OR L$ = "y" THEN 1530
1670 IF L$ <> "N" AND L$ <> "n" THEN BEEP: GOTO 1650
1680 F$ = INDEX$: GOSUB 5010 : GOTO 5580
1690 REM ***PRINT A RECORD***
1700 PRINT " ";H$(0);": ";J
1710 IF PF <> 0 THEN LPRINT " ";H$(0);": ";J
1720 FOR I = 1 TO NH
1730 IF I = 1 THEN PRINT "FIELD #"
1740 IF PF <> 0 THEN IF I = 1 THEN LPRINT "FIELD #"
1750 PRINT I;" ";H$(I);": ";N$(J,I)
1760 IF PF <> 0 THEN LPRINT I;" ";H$(I);": ";N$(J,I)
1770 NEXT I
1780 PRINT
1790 IF PF <> 0 THEN LPRINT
1800 L =L + NH + 2
1810 REM
1820 RETURN
1830 REM ***DELETE RECORDS***
1840 CLS
1850 INPUT "Enter the Record Number ('REC #') you want deleted or (Q or F) ";DR$:EX$ = DR$: GOSUB 6310
1860 DR = VAL(DR$)
1870 IF DR < 1 OR DR > NR THEN BEEP:COLOR 26,0:PRINT "Invalid Record Number":COLOR 7,0:GOTO 1850
1880 CLS: FOR I = 1 TO NH
1890 PRINT H$(I);":"; N$(DR,I): NEXT I
1900 PRINT "Is this the record you want to delete ?":INPUT "Enter (Y or N) ";G$
1910 IF G$ = "Y" OR G$ = "y" THEN 1940
1920 IF G$ <> "N" AND G$ <> "n" THEN BEEP: GOTO 1900
1930 GOTO 1830
1940 FOR J = DR TO NR - 1
1950 FOR I = 1 TO NH
1960 N$(J,I) = N$(J + 1,I)
1970 NEXT I
1980 NEXT J
1990 PRINT :NR = NR -1 : PRINT "Record Number ";:COLOR 26,0:PRINT DR;:COLOR 7,0:PRINT " Ready for Deletion"
2000 PRINT "Do you want to delete more records ?":INPUT "Enter (Y or N) or (Q or F) ";L$:EX$ = L$: GOSUB 6310
2010 IF L$ = "Y" OR L$ = "y" THEN 1850
2020 IF L$ <> "N" AND L$ <> "n" THEN BEEP: GOTO 2000
2030 PRINT "Requested Records Deleted"
2040 F$ = INDEX$: GOSUB 5010: GOTO 5580
2050 REM ***BASENAMEFILE ROUTINES***
2060 CLS
2070 LOCATE 1,25:COLOR 8,7: PRINT " ****** I B M P C ******":LOCATE 2,25:PRINT " ELECTRONIC FILING SYSTEM ":LOCATE 3,25:PRINT DT$;" VERSION";VE$:COLOR 7,0:LOCATE 4,33:PRINT "FILE MENU":PRINT:PRINT "Select File by Number:":PRINT
2080 Q=0
2090 FOR J = 1 TO NR:IF J < 10 THEN PRINT " ";J;" - ";R$(J); ELSE PRINT J;" - ";R$(J);
2100 Q=Q+1:IF Q<4 THEN PRINT TAB(Q*18);"";ELSE Q=0:PRINT
2110 NEXT J: PRINT
2120 IF Q <> 0 THEN PRINT
2130 PRINT "or you may"
2140 PRINT "(";:COLOR 8,7:PRINT "C";:COLOR 7,0: PRINT ")reate a new file"
2150 IF J > 1 THEN PRINT "(";:COLOR 8,7:PRINT "D";:COLOR 7,0:PRINT ")elete a file"
2710 IF NR = 1 THEN KILL "BASENAME"+"."+BASENAME$: GOTO 110
2720 FOR I = S TO NR - 1
2730 R$(I) = R$(I + 1)
2740 NEXT I
2750 NR = NR - 1: GOSUB 5010
2760 GOTO 2050
2770 REM ***REPORT***
2780 T9 = 0
2790 E = 0
2800 FOR I = 0 TO 3 * NH + 2:K(I) = 0:KC(I) = 0: NEXT I
2810 FOR I = 0 TO NH:AC(I) = 0: NEXT I:HC = 0:GT = 0
2820 ON E GOTO 3140
2830 GOTO 4510
2840 INPUT "Enter the number of fields you want on the report or (Q, M, or F) ";RH$:RH = VAL(RH$):EX$ = RH$: GOSUB 6290
2850 P$ = "Y"
2860 IF RH < 1 OR RH > NH THEN BEEP: GOTO 2840
2870 IF E = 0 THEN RN$(NN) = "PRESENT"
2880 FOR I = 1 TO RH * 3 STEP 3
2890 CLS:GOSUB 4400
2900 PRINT "Enter the ";:COLOR 8,7:PRINT "'FIELD #'";:COLOR 7,0:PRINT " you want in report column # ";(I+2)/3;" or (Q, M, or F) ";:INPUT" ";K$:K(I)=VAL(K$):EX$ = K$:GOSUB 6290
2910 IF K(I) = 0 THEN IF K$ <> "0" THEN K(I) = -1
2920 IF I = 1 THEN 2950
2930 FOR PX = 1 TO I-3 STEP 3:IF K(I) = K(PX) THEN K(I) = -1
2940 NEXT PX
2950 IF K(I) <0 OR K(I) > NH THEN BEEP: GOTO 2900
2960 KC(I) = (I+2)/3
2970 PRINT "Enter tab position for ";:COLOR 8,7:PRINT H$(K(I));:COLOR 7,0:PRINT " or (Q, M, or F) ";:INPUT "";K$:K(I + 1)=VAL(K$):EX$ = K$: GOSUB 6290
2980 IF K(I +1) < 1 OR K(I+ 1) > 132 THEN BEEP:COLOR 26,0:PRINT "Tab must be (1 - 132)":COLOR 7,0:GOTO 2970
2990 IF K(I) = 0 THEN 3030
3000 PRINT "Total on ";:COLOR 8,7:PRINT H$(K(I));:COLOR 7,0:PRINT " Enter (Y or N) ";: INPUT L$
3010 IF L$ <> "Y" AND L$ <>"y" AND L$ <> "N" AND L$ <> "n" THEN BEEP: GOTO 3000
3020 IF L$ = "Y" OR L$ = "y" THEN K(I + 2) = 1:K(0) = 1:T9=1
3030 NEXT I
3040 IF K(0) < > 1 THEN CLS:GOSUB 4400:GOTO 3140
3050 CLS:GOSUB 4400
3060 PRINT "Do you want a horizontal column total on your ";:COLOR 8,7:PRINT "TOTAL";:COLOR 7,0:PRINT " fields ?"
3070 INPUT "Enter (Y or N) ";A$
3080 IF A$ = "N" OR A$ = "n" THEN A$ = "":GOTO 3120
3090 IF A$<> "Y" AND A$ <> "y" THEN BEEP:GOTO 3060
3100 INPUT "Enter tab position for ";:COLOR 8,7:PRINT "TOTAL";:COLOR 7,0:PRINT " column or (Q, M, or F) ";A$:EX$ = A$:GOSUB 6290
3110 IF LEN(A$) = 0 THEN A$ = "0"
3120 IF LEN(A$) = 0 THEN K(0) = 2:T9 = 1: GOTO 3140
3130 K(I + 1) =VAL(A$): IF K(I + 1) < 1 OR K(I + 1) > 132 THEN COLOR 26,0:PRINT "Tab must be (1 - 132)":COLOR 7,0: BEEP: GOTO 3100
3140 PRINT
3150 PRINT "To select all records press ";:COLOR 8,7:PRINT "'RETURN'";:COLOR 7,0:PRINT " or select records by field number"
3160 INPUT "Press 'RETURN' or Enter ('FIELD #') or (Q, M, or F) ";S$:S=VAL(S$):EX$ = S$ : GOSUB 6290
3170 L$ = "N"
3180 X$="@"
3190 IF LEN(S$) = 0 THEN Q$ = "@": GOTO 3320
3200 IF S < 1 OR S > NH THEN BEEP:GOTO 3160
3210 PRINT "Do you want to select records using two fields ?":INPUT "Enter (Y or N) ";L$: IF L$="Y" OR L$ = "y" THEN 3250
3220 IF L$ <>"N" AND L$ <> "n" THEN BEEP: GOTO 3210
3230 X$ = "@"
3240 GOTO 3280
3250 PRINT: INPUT "Enter 2nd Field Number ('FIELD #') or (Q, M, or F) ";X$:X=VAL(X$):EX$ = X$: GOSUB 6290
3260 IF LEN(X$) = 0 THEN X$ = "@": GOTO 3280
3270 IF X < 1 OR X > NH THEN BEEP: GOTO 3250
3280 PRINT: PRINT " '@' will select all records"
3290 PRINT "Enter the data for search on field '";:COLOR 8,7:PRINT H$(S);:COLOR 7,0:PRINT "' = ";: LINE INPUT Q$
3300 IF Q$ <> "@" THEN IF L$ = "Y" OR L$ = "y" THEN PRINT "Enter the data for search on field '";:COLOR 8,7:PRINT H$(X);:COLOR 7,0:PRINT "' = ";: LINE INPUT "";X$
3310 Z$=" "+Q$
3320 REM
3330 REM
3340 GOSUB 3990
3350 FOR J = 1 TO NR
3360 N$(J,0) = STR$(J)
3370 IF Q$ = "@" THEN 3500
3380 IF S = 0 THEN 3430
3390 FOR I = 1 TO LEN(N$(J,S))
3400 IF MID$(N$(J,S),I,LEN(Q$)) = Q$ THEN 3450
3410 NEXT I
3420 GOTO 3510
3430 IF S = 0 THEN IF N$(J,0) = Z$ THEN 3450
3440 GOTO 3510
3450 IF X$ = "@" THEN 3500
3460 FOR I = 1 TO LEN(N$(J,X))
3470 IF MID$(N$(J,X),I,LEN(X$)) = X$ THEN GOSUB 3660: GOTO 3510
3480 NEXT I
3490 GOTO 3510
3500 GOSUB 3660
3510 IF PF < 1 THEN IF L > 22 THEN GOSUB 1480: GOSUB 3990
3520 IF L = 0 THEN GOSUB 3990
3530 NEXT J
3540 ON T9 GOSUB 3800
3550 REM
3560 ON E GOTO 3610
3570 PRINT : PRINT "Do you want to save this report format to ";:COLOR 8,7:PRINT "disk ?";:COLOR 7,0 :PRINT " "
3580 INPUT "Enter (Y or N) or (Q, M, or F) ";L$:EX$ = L$:GOSUB 6290
3590 IF L$<>"Y" AND L$ <> "y" AND L$ <> "N" AND L$ <>"n" THEN BEEP: GOTO 3570
3600 IF L$ = "Y" OR L$ = "y" THEN E = 1: GOSUB 4170
3610 PRINT : PRINT "More reports using the '";:COLOR 8,7:PRINT RN$(NN);:COLOR 7,0:PRINT "' format ?"
3620 INPUT "Enter (Y or N) or (Q, M, or F) ";L$:EX$ = L$: GOSUB 6290
3630 IF L$ <>"Y" AND L$ <> "y" AND L$ <> "N" AND L$ <> "n" THEN BEEP: GOTO 3610
3640 IF L$ = "Y" OR L$ = "y" THEN E = 1: GOTO 2810
3650 GOTO 5580
3660 FOR I = 1 TO RH
3670 PRINT TAB(K(3*I-1));N$(J,K(3 * I - 2));
3680 IF PF <> 0 THEN LPRINT TAB(K(3*I-1));N$(J,K(3*I-2));
3690 ON K(3 *I) GOSUB 3770
3700 NEXT I
3710 IF PF <> 0 THEN IF K(0)=1 THEN IF HC<>0 THEN LPRINT TAB(K(3*I-1));HC;
3720 IF K(0) =1 THEN IF HC<>0 THEN PRINT TAB(K(3*I-1));HC;:GT=GT+HC:HC=0
3730 L = L + 1
3740 PRINT
3750 IF PF <> 0 THEN LPRINT
3760 RETURN
3770 N = 3 * I - 2
3780 V = VAL(N$(J,K(N))):AC(I) = AC(I) + V:HC = HC + V
3790 RETURN
3800 KS=999:KT = 0: FOR I = 1 TO RH + 1: IF K(3*I-1) > KT THEN KT = K(3*I-1)
3810 IF K(3*I-1) > 0 THEN IF K(3*I-1) < KS THEN KS = K(3*I-1)
3820 NEXT I
3830 PRINT TAB(KS);:FOR I = KS TO KT + 5: PRINT "-";:NEXT I: PRINT
3840 FOR I = 1 TO RH
3850 IF AC(I) = 0 THEN 3870
3860 PRINT TAB((K(3*I-1))-1);AC(I);
3870 NEXT I
3880 IF GT < > 0 THEN PRINT TAB(K(3*I-1));GT;
3890 PRINT
3900 IF PF = 0 THEN 3980
3910 LPRINT TAB(KS);:FOR I = KS TO KT + 5:LPRINT "-";:NEXT I:LPRINT
3920 FOR I = 1 TO RH
3930 IF AC(I) = 0 THEN 3950
3940 LPRINT TAB(K(3*I-1));AC(I);
3950 NEXT I
3960 IF GT <> 0 THEN LPRINT TAB(K(3*I-1));GT;
3970 LPRINT
3980 RETURN
3990 CLS
4000 PRINT RN$(NN);" REPORT FOR ";H$(S);":";Q$;
4010 IF PF <> 0 THEN LPRINT RN$(NN);" REPORT FOR ";H$(S);":";Q$;
4020 IF X$ = "@" THEN 4060
4030 PRINT " AND ";H$(X);":";X$
4040 IF PF <> 0 THEN LPRINT " AND ";H$(X);":";X$
4050 GOTO 4080
4060 PRINT ""
4070 IF PF <> 0 THEN LPRINT ""
4080 FOR I = 1 TO RH
4090 PRINT TAB(K(3*I-1));H$(K(3 * I - 2));
4100 IF PF <> 0 THEN LPRINT TAB(K(3*I-1));H$(K(3*I-2));
4110 NEXT I
4120 IF K(0) = 1 THEN PRINT TAB(K(3*I-1));"TOTAL";
4130 IF PF<>0 AND K(0) = 1 THEN LPRINT TAB(K(3*I-1));"TOTAL";
4140 PRINT : PRINT
4150 IF PF <> 0 THEN LPRINT:LPRINT
4160 L = 4: RETURN
4170 REM ***SET-UP TO SAVE RPTFMTFILE***
4180 NS = NR
4190 LINE INPUT "Enter the name of this Report Format (maximum 3 characters) ";T$
4200 GOSUB 5990:RN$(NN)=T$
4210 IF LEN(RN$(NN)) <1 OR LEN(RN$(NN)) >3 THEN BEEP: GOTO 4190
4220 IF NN=1 THEN 4260
4230 FOR T = 1 TO NN-1
4240 IF RN$(T)=RN$(NN) THEN BEEP:COLOR 26,0:PRINT "Duplicate Report Format Name":COLOR 7,0:GOTO 4190
4250 NEXT T
4260 F$ = RN$(NN)
4270 NR = 3 * RH + 2
4280 FOR I = 1 TO NR:R$(I) = STR$(K(I)): NEXT I
4290 R$(I - 2) = STR$(K(0))
4300 GOSUB 5010 :GOSUB 5200
4310 RETURN
4320 REM ***SET-UP TO READ RPTFMTFILE***
4330 F$ = RN$(NN)
4340 GOSUB 4770
4350 RH = (NR - 2) / 3:FOR I = 1 TO NR:K(I) = VAL(R$(I)):NEXT I
4360 K(0) = VAL(R$(I - 2))
4370 IF K(0) <> 0 THEN T9=1
4380 NR = NS
4390 GOSUB 4400: PRINT : GOTO 3150
4400 REM ***FILE MENU***
4410 PRINT "Select from:": PRINT
4420 IF P$ = "Y" THEN PRINT TAB(2);"TAB";TAB(8);"TOTAL ";
4430 PRINT "FIELD #"
4440 IF T$ = "Y" THEN 4460
4450 IF MF = 0 THEN PRINT " 0 ";H$(0)
4460 FOR J = 1 TO NH
4470 IF P$ = "Y" THEN GOSUB 6480
4480 PRINT J;" ";H$(J):NEXT J:PRINT
4490 MF = 0
4500 RETURN
4510 REM ***READ REPORTNAMEFILE & SELECT REPORT***
4520 NN = 0: FOR I = 0 TO 21:RN$(I) = "": NEXT I:NS = NR
4530 F$ = RPTFMT$
4540 EX = 3970
4550 GOSUB 4770
4560 FOR I = 1 TO NR:RN$(I) = R$(I): NEXT I
4570 CLS : PRINT "Select from:": PRINT
4580 PRINT "FORMAT #"
4590 FOR I = 1 TO NR: PRINT I;" ";R$(I): NEXT I: PRINT
4600 PRINT "or you may"
4610 PRINT "(";:COLOR 10,7:PRINT "C";:COLOR 7,0:PRINT ")reate a new Report Format"
4620 INPUT "Enter Report Format Number ('FORMAT #'or C) or (Q, M, or F) ";S$:S = 0:EX$ = S$
4630 IF S$ = "M" OR S$ = "m" THEN NR = NS
4640 GOSUB 6290
4650 IF S$ = "C" OR S$ = "c" THEN S = I :GOTO 4680
4660 S = VAL(S$)
4670 IF S < 1 OR S > I-1 THEN BEEP: GOTO 4620
4680 CLS
4690 NN = S
4700 IF S < > I THEN RN$(S) = R$(S):E = 1:NR = NS: GOTO 4320
4710 GOTO 4760
4720 CLS : COLOR 26,0:PRINT "No Report Formats on disk":COLOR 7,0:: PRINT
4730 NN = 1
4740 PRINT "Do you want to create one ?":INPUT "Enter (Y or N) or (Q, M, or F)";L$:EX$ = L$ : GOSUB 6290:IF L$="N" OR L$ = "n" THEN 5580
4750 IF L$ <>"Y" AND L$ <> "y" THEN BEEP: GOTO 4740
4760 T$ = "Y": GOSUB 4400:NR =NS: GOTO 2840
4770 REM ***READ FILES***
4775 FF = 0
4780 IF F$ < > INDEX$ THEN FF = 1
4790 REM
4800 REM
4810 IF F$ = BASENAME$ THEN DB$ = "BASENAME"
4820 OPEN "I",1,DB$+"."+F$
4830 INPUT #1, NR
4840 FOR J = 1 TO NR
4850 ON FF GOTO 4940
4860 IF J > B THEN CLS:COLOR 26,0:PRINT "FILE TOO LARGE - RECORD ";J;" BYPASSED --- CTL-S TO PAUSE CTL-Q TO RESUME":COLOR 7,0
4870 FOR I = 1 TO NH
4880 I$=""
4890 LINE INPUT#1, I$
4900 IF J > B THEN PRINT R$(I);" : "; I$: GOTO 4920
4910 N$(J,I) = I$
4920 NEXT I
4930 GOTO 4950
4940 LINE INPUT#1,R$(J)
4950 IF J > B THEN FOR X = 1 TO 3000:NEXT X: NR = B
4960 NEXT J
4970 REM
4980 CLOSE 1
4990 FF = 0
5000 RETURN
5010 REM ***SAVE FILES***
5015 FF = 0
5020 IF F$ < > INDEX$ THEN FF = 1
5030 REM
5040 REM
5050 IF F$ = BASENAME$ THEN DB$ = "BASENAME"
5060 OPEN "O",1,DB$+"."+F$
5070 PRINT#1, NR
5080 FOR J = 1 TO NR
5090 ON FF GOTO 5140
5100 FOR I = 1 TO NH
5110 PRINT#1, N$(J,I)
5120 NEXT I
5130 GOTO 5150
5140 PRINT#1, R$(J)
5150 NEXT J
5160 CLOSE 1
5170 REM
5180 FF = 0
5190 RETURN
5200 REM ***SAVE REPORTNAMEFILE***
5210 NR = NN
5220 F$ = RPTFMT$
5230 FOR I = 1 TO NR:R$(I) = RN$(I): NEXT I
5240 GOSUB 5010
5250 NR = NS: RETURN
5260 REM ***LIST***
5270 L = 0
5280 CLS
5290 FOR J = 1 TO NR
5300 IF PF <> 0 THEN LPRINT " ";H$(0);": ";J
5310 PRINT " ";H$(0);": ";J:L = L + 1
5320 FOR I = 1 TO NH
5330 IF I = 1 THEN PRINT "FIELD #"
5340 IF I = 1 THEN IF PF <> 0 THEN LPRINT "FIELD #"
5350 IF PF <> 0 THEN LPRINT I;" "H$(I);": ";N$(J,I)
5360 PRINT I;" ";H$(I);": ";N$(J,I)
5370 L = L + 1
5380 NEXT I
5390 IF PF <> 0 THEN LPRINT
5400 PRINT :L = L + 1
5410 IF PF < > 0 THEN 5430
5420 IF L + NH > 20 THEN 5470
5430 NEXT J
5440 REM
5450 COLOR 26,0:PRINT "That's all of them":COLOR 7,0: INPUT "Press 'RETURN' to continue";L$
5460 GOTO 5580
5470 REM
5480 PRINT "Press ";:COLOR 8,7:PRINT "'RETURN'";:COLOR 7,0:PRINT " to continue, or (Q, M, or F)";
5490 INPUT L$:EX$ = L$ : GOSUB 6290
5500 IF LEN(L$) = 0 THEN 5530
5510 BEEP
5520 GOTO 5490
5530 CLS :L = 0
5540 GOTO 5430
5550 REM ***INPUT ROUTINES***
5560 I$ = ""
5570 LINE INPUT""; I$: RETURN
5580 REM ***MAIN MENU***
5590 REM
5600 CLS
5610 P$ = "":T$ = ""
5620 COLOR 8,7:LOCATE 1,15:PRINT" ****** I B M P C ****** "
5625 COLOR 7,0:LOCATE 1,57:PRINT DATE$;" ";TIME$:COLOR 8,7
5630 LOCATE 2,15:PRINT "**** ELECTRONIC FILING SYSTEM ****"